Computer systems often support the execution of instructions in a debugging mode, which can be used to help debug applications. For example, in a typical debugging mode, the computer system monitors and logs communications between a central processing unit and an external memory. When the central processing unit reads data from or writes data to the external memory, the data and the address of the data may be logged. In this way, a user can later analyze the log and identify potential problems with an application.
A problem with this scheme on conventional computer systems is that a typical central processing unit includes one or more caches. These caches can store and facilitate retrieval of information without accessing the external memory. As a result, the use of the cache typically cannot be monitored during debugging. Also, applications or operating systems being executed by the central processing unit could be configured to use the external memory instead of the cache, but this often modifies the behavior of the applications or the operating systems. As a result, the information collected during debugging may not reflect the normal operation of the applications or the operating systems.